package com.example.demo.util;

import com.example.demo.entity.Person;
import org.apache.shiro.SecurityUtils;
import org.apache.shiro.subject.Subject;

/**
 * @Author: yucs
 * @Date: 2021/9/2 13:34
 * shiro工具类，用来在任意地方使用
 * 判断角色权限，获取用户信息等
 */
public class ShiroUtils {
    /**
     * 获取当前 Subject
     * @return Subject
     */
    public static Subject getSubject() {
        return SecurityUtils.getSubject();
    }

    /**
     * 验证当前用户是否属于该角色？
     * @param roleName 角色名
     * @return 属于该角色：true，否则false
     */
    public static boolean hasRole(String roleName) {
        return getSubject() != null && roleName != null
                && roleName.length() > 0 && getSubject().hasRole(roleName);
    }

    /**
     * 验证当前用户是否拥有指定权限——如使用roles做权限验证，就用不到这个
     * @param permission 权限名
     * @return 拥有权限：true，否则false
     */
    public static boolean hasPermission(String permission) {
        return getSubject() != null && permission != null
                && permission.length() > 0
                && getSubject().isPermitted(permission);
    }

    /**
     * 获取当前登录者的id
     * @return
     */
//    public static Long getId(){
//        Subject subject = SecurityUtils.getSubject();
//        Person loginPerson = (Person)subject.getPrincipal();
//
//        return loginPerson.getId();
//    }

}
